// Elemento.cpp: implementation of the Elemento class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "sisgraf03.h"
#include "Elemento.h"
#include <Math.h>

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

Elemento::Elemento()
{

}

Elemento::~Elemento()
{

}

void Elemento::Rotar(double alfa)
{
	Matriz m = M_Rotacion(alfa);
	Transformar(m);
}

void Elemento::Transladar(double tx, double ty)
{
	Matriz m = M_Translacion(tx, ty);
	Transformar(m);
}

void Elemento::Escalar(double ex, double ey)
{
	Matriz m = M_Escalado(ex, ey);
	Transformar(m);
}

Matriz Elemento::M_Translacion(double tx, double ty)
{
	Matriz m(3,3);
	m.Asignar(1,1,1.0);
	m.Asignar(2,2,1.0);
	m.Asignar(3,3,1.0);
	m.Asignar(1,3,tx);
	m.Asignar(2,3,ty);
	return m;
}

Matriz Elemento::M_Escalado(double ex, double ey)
{
	Matriz m(3,3);
	m.Asignar(1,1,ex);
	m.Asignar(2,2,ey);
	m.Asignar(3,3,1.0);
	return m;
}

Matriz Elemento::M_Rotacion(double a)
{
	double pi = 4.0 * atan(1.0);
	a = (a/180)*pi;
	Matriz m(3,3);
	m.Asignar(1,1,cos(a));
	m.Asignar(1,2,-sin(a));
	m.Asignar(2,1,sin(a));
	m.Asignar(2,2,cos(a));
	m.Asignar(3,3,1.0);
	return m;
}

void Elemento::Transformar(Matriz m)
{

}

void Elemento::Dibujar(Matriz m, int *cVP, CDC* pDC) 
{

}

Matriz Elemento::Vector(Puntos *p)
{
	Matriz m(3,1);
	m.Asignar(1,1,p->obtenerX());
	m.Asignar(2,1,p->obtenerY());
	m.Asignar(3,1,1.0);
	return m;
}

Puntos Elemento::Punto(Matriz m)
{
	Puntos p(m.Elemento(1,1),m.Elemento(2,1));
	return p;
}